package com.xoms.front.util.pay.wx.orderquery;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

/**
 * 提交刷卡支付
 * 
 * 支付返回结果参数定义
 */
@XmlRootElement(name = "xml")
public class WXOrderqueryResponse {
	private String return_code; // 返回状态码 是 String(16) SUCCESS SUCCESS/FAIL
								// 此字段是通信标识，非交易标识，交易是否成功需要查看trade_state来判断
	private String return_msg; // 返回信息 否 String(128) 签名失败 返回信息，如非空，为错误原因 签名失败 参数格式校验错误

	// 当return_code为SUCCESS的时候，还会包括以下字段：
	private String appid; // 公众账号ID 是 String(32) wxd678efh567hg6787 微信分配的公众账号ID
	private String mch_id; // 商户号 是 String(32) 1230000109 微信支付分配的商户号
	private String nonce_str; // 随机字符串 是 String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 随机字符串，不长于32位。推荐随机数生成算法
	private String sign; // 签名 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名，详见签名生成算法
	private String result_code; // 业务结果 是 String(16) SUCCESS SUCCESS/FAIL
	private String err_code; // 错误代码 否 String(32) SYSTEMERROR 错误码
	private String err_code_des; // 错误代码描述 否 String(128) 系统错误

	// 以下字段在return_code 、result_code、trade_state都为SUCCESS时有返回 ，如trade_state不为
	// SUCCESS，则只返回out_trade_no（必传）和attach（选传）。
	private String device_info; // 设备号 否 String(32) 013467007045764 微信支付分配的终端设备号，
	private String openid; // 用户标识 是 String(128) oUpF8uMuAJO_M2pxb1Q9zNjWeS6o 用户在商户appid下的唯一标识
	private String is_subscribe; // 是否关注公众账号 否 String(1) Y 用户是否关注公众账号，Y-关注，N-未关注，仅在公众账号类型支付有效
	private String trade_type; // 交易类型 是 String(16) JSAPI 调用接口提交的交易类型，取值如下：JSAPI，NATIVE，APP，MICROPAY，详细说明见参数规定
	private String trade_state; // 交易状态 是 String(32) SUCCESS SUCCESS—支付成功 REFUND—转入退款 NOTPAY—未支付 CLOSED—已关闭
								// REVOKED—已撤销（刷卡支付） USERPAYING--用户支付中 PAYERROR--支付失败(其他原因，如银行返回失败)
								// 支付状态机请见下单API页面
	private String bank_type; // 付款银行 是 String(16) CMC 银行类型，采用字符串类型的银行标识
	private int total_fee; // 标价金额 是 Int 100 订单总金额，单位为分
	private int settlement_total_fee; // 应结订单金额 否 Int 100 当订单使用了免充值型优惠券后返回该参数，应结订单金额=订单金额-免充值优惠券金额。
	private String fee_type; // 标价币种 否 String(8) CNY 货币类型，符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
	private int cash_fee; // 现金支付金额 是 Int 100 现金支付金额订单现金支付金额，详见支付金额
	private String cash_fee_type; // 现金支付币种 否 String(16) CNY 货币类型，符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
	private int coupon_fee; // 代金券金额 否 Int 100 “代金券”金额<=订单金额，订单金额-“代金券”金额=现金支付金额，详见支付金额
	private int coupon_count; // 代金券使用数量 否 Int 1 代金券使用数量
	private String coupon_type_$n; // 代金券类型 否 String CASH CASH--充值代金券 NO_CASH---非充值优惠券
									// 开通免充值券功能，并且订单使用了优惠券后有返回（取值：CASH、NO_CASH）。$n为下标,从0开始编号，举例：coupon_type_$0
	private String coupon_id_$n; // 代金券ID 否 String(20) 10000 代金券ID, $n为下标，从0开始编号
	private int coupon_fee_$n; // 单个代金券支付金额 否 Int 100 单个代金券支付金额, $n为下标，从0开始编号
	private String transaction_id; // 微信支付订单号 是 String(32) 1009660380201506130728806387 微信支付订单号
	private String out_trade_no; // 商户订单号 是 String(32) 20150806125346 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@
									// ，且在同一个商户号下唯一。
	private String attach; // 附加数据 否 String(128) 深圳分店 附加数据，原样返回
	private String time_end; // 支付完成时间是 String(14) 20141030133525
								// 订单支付时间，格式为yyyyMMddHHmmss，如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则
	private String trade_state_desc; // 交易状态描述 是 String(256) 支付失败，请重新下单支付 对当前查询订单状态的描述和下一步操作的指引

	@XmlElement(name = "return_code")
	public String getReturn_code() {
		return return_code;
	}

	public void setReturn_code(String return_code) {
		this.return_code = return_code;
	}

	@XmlElement(name = "return_msg")
	public String getReturn_msg() {
		return return_msg;
	}

	public void setReturn_msg(String return_msg) {
		this.return_msg = return_msg;
	}

	@XmlElement(name = "appid")
	public String getAppid() {
		return appid;
	}

	public void setAppid(String appid) {
		this.appid = appid;
	}

	@XmlElement(name = "mch_id")
	public String getMch_id() {
		return mch_id;
	}

	public void setMch_id(String mch_id) {
		this.mch_id = mch_id;
	}

	@XmlElement(name = "device_info")
	public String getDevice_info() {
		return device_info;
	}

	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}

	@XmlElement(name = "nonce_str")
	public String getNonce_str() {
		return nonce_str;
	}

	public void setNonce_str(String nonce_str) {
		this.nonce_str = nonce_str;
	}

	@XmlElement(name = "sign")
	public String getSign() {
		return sign;
	}

	public void setSign(String sign) {
		this.sign = sign;
	}

	@XmlElement(name = "result_code")
	public String getResult_code() {
		return result_code;
	}

	public void setResult_code(String result_code) {
		this.result_code = result_code;
	}

	@XmlElement(name = "err_code")
	public String getErr_code() {
		return err_code;
	}

	public void setErr_code(String err_code) {
		this.err_code = err_code;
	}

	@XmlElement(name = "err_code_des")
	public String getErr_code_des() {
		return err_code_des;
	}

	public void setErr_code_des(String err_code_des) {
		this.err_code_des = err_code_des;
	}

	@XmlElement(name = "openid")
	public String getOpenid() {
		return openid;
	}

	public void setOpenid(String openid) {
		this.openid = openid;
	}

	@XmlElement(name = "is_subscribe")
	public String getIs_subscribe() {
		return is_subscribe;
	}

	public void setIs_subscribe(String is_subscribe) {
		this.is_subscribe = is_subscribe;
	}

	@XmlElement(name = "trade_type")
	public String getTrade_type() {
		return trade_type;
	}

	public void setTrade_type(String trade_type) {
		this.trade_type = trade_type;
	}

	@XmlElement(name = "bank_type")
	public String getBank_type() {
		return bank_type;
	}

	public void setBank_type(String bank_type) {
		this.bank_type = bank_type;
	}

	@XmlElement(name = "fee_type")
	public String getFee_type() {
		return fee_type;
	}

	public void setFee_type(String fee_type) {
		this.fee_type = fee_type;
	}

	@XmlElement(name = "cash_fee_type")
	public String getCash_fee_type() {
		return cash_fee_type;
	}

	public void setCash_fee_type(String cash_fee_type) {
		this.cash_fee_type = cash_fee_type;
	}

	@XmlElement(name = "transaction_id")
	public String getTransaction_id() {
		return transaction_id;
	}

	public void setTransaction_id(String transaction_id) {
		this.transaction_id = transaction_id;
	}

	@XmlElement(name = "out_trade_no")
	public String getOut_trade_no() {
		return out_trade_no;
	}

	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}

	@XmlElement(name = "attach")
	public String getAttach() {
		return attach;
	}

	public void setAttach(String attach) {
		this.attach = attach;
	}

	@XmlElement(name = "time_end")
	public String getTime_end() {
		return time_end;
	}

	public void setTime_end(String time_end) {
		this.time_end = time_end;
	}

	@XmlElement(name = "trade_state")
	public String getTrade_state() {
		return trade_state;
	}

	public void setTrade_state(String trade_state) {
		this.trade_state = trade_state;
	}

	@XmlElement(name = "total_fee")
	public int getTotal_fee() {
		return total_fee;
	}

	public void setTotal_fee(int total_fee) {
		this.total_fee = total_fee;
	}

	@XmlElement(name = "settlement_total_fee")
	public int getSettlement_total_fee() {
		return settlement_total_fee;
	}

	public void setSettlement_total_fee(int settlement_total_fee) {
		this.settlement_total_fee = settlement_total_fee;
	}

	@XmlElement(name = "cash_fee")
	public int getCash_fee() {
		return cash_fee;
	}

	public void setCash_fee(int cash_fee) {
		this.cash_fee = cash_fee;
	}

	@XmlElement(name = "coupon_fee")
	public int getCoupon_fee() {
		return coupon_fee;
	}

	public void setCoupon_fee(int coupon_fee) {
		this.coupon_fee = coupon_fee;
	}

	@XmlElement(name = "coupon_count")
	public int getCoupon_count() {
		return coupon_count;
	}

	public void setCoupon_count(int coupon_count) {
		this.coupon_count = coupon_count;
	}

	@XmlElement(name = "coupon_type_$n")
	public String getCoupon_type_$n() {
		return coupon_type_$n;
	}

	public void setCoupon_type_$n(String coupon_type_$n) {
		this.coupon_type_$n = coupon_type_$n;
	}

	@XmlElement(name = "coupon_id_$n")
	public String getCoupon_id_$n() {
		return coupon_id_$n;
	}

	public void setCoupon_id_$n(String coupon_id_$n) {
		this.coupon_id_$n = coupon_id_$n;
	}

	@XmlElement(name = "coupon_fee_$n")
	public int getCoupon_fee_$n() {
		return coupon_fee_$n;
	}

	public void setCoupon_fee_$n(int coupon_fee_$n) {
		this.coupon_fee_$n = coupon_fee_$n;
	}

	@XmlElement(name = "trade_state_desc")
	public String getTrade_state_desc() {
		return trade_state_desc;
	}

	public void setTrade_state_desc(String trade_state_desc) {
		this.trade_state_desc = trade_state_desc;
	}

}
